/*****路由器模块：封装着与product相关的路由*******/
//引入必需的模块
const express = require('express')
const pool = require('../pool')
const router = express.Router()
module.exports = router

/*路由：向客户端输出商品列表 
	请求方法：GET
	接口地址：/v2/product/list
	请求查询字符串数据：pageSize - (可选)一次查询几条数据，如果未指定，则默认返回10条记录
	http://127.0.0.1:8080/v2/product/list?pageSize=5
*/
router.get('/list', (req, res)=>{
	let ps = req.query.pageSize  //客户端提交的查询字符串数据都是string
	ps = ps ? parseInt(ps) : 10	//如果客户端提交了ps，则用原值；否则设置为10
	
	let sql = 'SELECT  lid,title,price  FROM  xz_laptop  LIMIT  ?'
	pool.query(sql, ps, (err, result)=>{
		if(err)throw err
		res.send(result)
	})
})

/*
接口地址：/v2/product/listbypage   分页向客户端返回商品数据
请求参数：
	pageSize — 每页显示的记录数
	pageNum — 要显示的页号
返回数据：JSON格式，形如 [{"lid":11,"title":"戴尔","price":3500}, ...{ }]
*/
router.get('/listbypage', (req, res)=>{
	let ps = req.query.pageSize		//接收客户端提交的请求数据：页面大小
	ps = parseInt(ps)	//把请求查询字符串中的字符串解析为整数
	let pn = req.query.pageNum		//接收客户端提交的请求数据：页号
	
	//从数据库中的哪条记录开始读取
	let start = (pn-1)*ps   //此处有一个隐式类型转换：string>number
	let sql = 'SELECT  lid,title,price  FROM xz_laptop  LIMIT   ?, ?'
	pool.query(sql, [start, ps], (err,result)=>{
		if(err)throw err
		res.send(result)   //result(JS对象) => JSON.stringify()
	})
})


/*
接口地址：/v2/product/remove   根据商品编号，删除商品
请求参数：
	lid - 要删除的商品的编号
返回数据：Text格式，形如 “delete-succ”或“delete-err”
*/
router.delete('/remove', (req, res)=>{
	let lid = req.query.lid
	lid = parseInt(lid)
	
	let sql = 'DELETE  FROM  xz_laptop  WHERE   lid=?'
	pool.query(sql,  lid,  (err,result)=>{
		if(err)throw err
		if(result.affectedRows>0){		//affected 被影响  rows 行数
			res.send('delete-succ')		//此处的响应消息主体是 text/plain
		}else {
			res.send('delete-err')
		}
	})
})

/*
接口地址：POST /v2/product/add   添加商品
请求主体：
	title - 商品名称
	price - 单价
返回数据：{"code": 901, "lid":44 }
*/
router.post('/add', (req, res)=>{
	let t = req.body.title
	let p = req.body.price
	 
	let sql = 'INSERT INTO xz_laptop(title, price)  VALUES(?,?)'
	pool.query(sql, [t, p], (err, result)=>{
		if(err)throw err
		res.send(result)
	})
})